package chap3_3;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

/**
 * @author https://gitee.com/W_Jun
 * @date 2021-12-13 16:27
 * @Description
 */
public class StringDemo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //定义一个字符串
        String s = "中国";
        //编码
        byte[] bytes = s.getBytes();
        System.out.println(Arrays.toString(bytes));//[-28, -72, -83, -27, -101, -67]
        //控制台输出结果可以看出，用3个字节表示一个汉字。默认使用utf-8编码。

        //解码
        byte[] bytes1 = s.getBytes("UTF-8");
        System.out.println(Arrays.toString(bytes1));//可以看出，指定UTF-8与不指定(默认)一样，使用utf-8编码。

        byte[] bytes2 = s.getBytes("GBK");
        System.out.println(Arrays.toString(bytes2));//[-42, -48, -71, -6]
        //指定GBK编码的话，可以看出，是用2个字节表示一个汉字。

        //解码
        String ss = new String(bytes);
        System.out.println(ss);//中国

        String ss1 = new String(bytes, "UTF-8");
        System.out.println(ss1);//中国,指定解码方案为utf-8与不指定(默认)一样，所以，默认解码也是utf-8

        String ss2 = new String(bytes, "GBK");
        String s2 = new String(bytes2, "GBK");
        System.out.println(ss2);//乱码，因为编码(utf-8)和解码(gbk)采用了不同规则
        System.out.println(s2);//中国，编码(gbk)与解码(gbk)采用了相同规则
    }
}
